package com.caiheng.api.util;

import cn.hutool.core.util.StrUtil;

import java.util.ArrayList;
import java.util.List;

public class PhoneUtils {


    /**
     *  判断是否是手机号
     * @param number
     * @return
     */
    public static boolean isPhoneNumber(String number) {
        // 正则表达式匹配，手机号的格式可以根据需求进行修改
        String regex = "^(13\\\\d|14[5-9]|15[0-3,5-9]|16[6]|17[0-8]|18\\\\d|19[0-3,5-9])\\\\d{8}$";
        return number.matches(regex);
    }


    /**
     * 隐藏多个逗号分隔的手机号中间4位
     * @param phones 逗号分隔的手机号字符串（例如："13812345678,13987654321"）
     * @return 隐藏中间4位后的字符串（例如："138****5678,139****4321"）
     */
    public static List<String> getPhoneListByStr(String phones) {
        List<String> list = new ArrayList<>();
        if (phones == null || phones.isEmpty()) {
            return new ArrayList<>();
        }

        String[] phoneArray = phones.split("/");
        if(phones.contains("/")){
            phoneArray = phones.split("/");
        } else if(phones.contains(" ")){
            phoneArray = phones.split(" ");
        } else if(phones.contains(",")){
            phoneArray = phones.split(",");
        }

        for (String phone : phoneArray) {
            phone = phone.trim();
            //判断是手机号再添加
            if(StrUtil.isNotEmpty(phone) && isPhoneNumber(phone)){
                list.add(phone);
            }
        }
        return list;
    }


    /**
     * 隐藏多个逗号分隔的手机号中间4位
     * @param phones 逗号分隔的手机号字符串（例如："13812345678,13987654321"）
     * @return 隐藏中间4位后的字符串（例如："138****5678,139****4321"）
     */
    public static String hideMiddleFourDigits(String phones) {
        if (phones == null || phones.isEmpty()) {
            return phones;
        }

        String[] phoneArray = phones.split("/");
        if(phones.contains("/")){
            phoneArray = phones.split("/");
        } else if(phones.contains(" ")){
            phoneArray = phones.split(" ");
        } else if(phones.contains(",")){
            phoneArray = phones.split(",");
        }
        StringBuilder result = new StringBuilder();

        for (String phone : phoneArray) {
            phone = phone.trim();
            if(StrUtil.isNotEmpty(phone)){
                if (phone.length() == 11) { // 标准11位手机号
                    String hiddenPhone = phone.substring(0, 3) + "****" + phone.substring(7);
                    result.append(hiddenPhone).append(",");
                } else {
                    result.append(phone).append(","); // 非标准手机号不做处理
                }
            }
        }

        // 移除最后一个多余的逗号
        if (result.length() > 0) {
            result.deleteCharAt(result.length() - 1);
        }

        return result.toString();
    }

    // 测试方法
    public static void main(String[] args) {
        String phones = "13812345678,13987654321,12345";
        System.out.println(hideMiddleFourDigits(phones)); // 输出：138****5678,139****4321,12345
    }
}
